/*
 * BestFitApplication.cc
 *
 *  Created on: Apr 16, 2013
 *      Author: erik
 */

#include "BestFitApplication.h"	// De pseudo applicaties
// Unix/Linux includes
#include <cstdlib>			// srand(3), rand(3), exit(2)



// Our own includes
#include "ansi.h"			// ansi color codes
#include "main.h"			// common global stuff
#include "Stopwatch.h"		// De cpu tijd meter


// introduce std shorthands
using std::cout;
using std::cerr;
using std::endl;

// Elke test die hieronder uitgevoerd wordt zou een 'assert' failure
// moeten veroorzaken die de normale executie-volgorde afbreekt.

void BestFitApplication::testing()
{

	Application::testing();

	cerr << "Controle of vrijegebeiden gesortreerd zijn (klein naar groot)...\n";
	if(!geheugenTest1()){
		cerr << "Error!" << endl;
	}
	else
		cerr << "OKE" << endl;


}

bool BestFitApplication::geheugenTest1()
{
	Area  *ap1 = beheerder->alloc(20);	// dit moet altijd kunnen
	Area  *ap2 = beheerder->alloc(30);	// dit moet altijd kunnen
	Area  *ap3 = beheerder->alloc(5);	// dit moet altijd kunnen
	Area  *ap4 = beheerder->alloc(15);	// dit moet altijd kunnen
	beheerder->free(ap3);
	beheerder->free(ap2);
	beheerder->free(ap4);

	std::list<Area *> areas =  ((BestFit)beheerder).getAreas();

	Area * oldArea = 0;
	for(ALiterator  i = areas.begin() ; i != areas.end() ; ++i) {
			Area  *ap = *i;

			if(oldArea != 0 && ap->getSize() < oldArea->getSize())
			{
					return false;
			}
			oldArea =  *i;
	}

	return true;
}


